package club.zhcs.capture.biz.auth;

import java.util.List;

import club.zhcs.capture.bean.auth.Role;
import club.zhcs.capture.bean.auth.User;

import org.nutz.dao.entity.Record;

import com.dgj.utils.entries.Result;
import com.dgj.utils.web.pager.Pager;

public interface IUserService {
	/**
	 * 根据用户名查询
	 * 
	 * @param userName
	 * @return
	 */
	User findByName(String userName);

	/**
	 * 添加用户
	 * 
	 * @param user
	 * @return
	 */
	User addUser(User user);

	/**
	 * 根据用户真实姓名查询
	 * 
	 * @param companyName
	 */
	List<User> findByRealName(String companyName);

	/**
	 * 根据用户id查询
	 * 
	 * @param id
	 * @return
	 */
	User findById(int id);

	/**
	 *
	 * @param user
	 * @param updateField
	 * @return
	 */
	Result update(User user, String... updateField);

	/**
	 * 分页查询用户
	 * 
	 * @param page
	 * @return
	 */
	Pager<User> listByPage(int page);

	/**
	 * 检索用户
	 * 
	 * @param page
	 * @param key
	 * @return
	 */
	Pager<User> searchByKey(int page, String key);

	/**
	 * 删除用户
	 * 
	 * @param id
	 * @return
	 */
	boolean deleteUser(int id);

	/**
	 * 查询用户角色关系信息
	 * 
	 * @param id
	 * @return
	 */
	List<Record> findUserRoleStatusByUserId(int id);

	/**
	 * 设置角色
	 * 
	 * @param ids
	 * @param userId
	 * @return
	 */
	Result setRole(int[] ids, int userId);

	/**
	 * 查询用户权限关系信息
	 * 
	 * @param id
	 * @return
	 */
	List<Record> findUserPermissionByUserId(int id);

	/**
	 * 设置权限
	 * 
	 * @param ids
	 * @param userId
	 * @return
	 */
	Result setPermission(int[] ids, int userId);

	/**
	 * 根据权限查询用户
	 * 
	 * @param role
	 * @return
	 */
	List<User> findUserByRole(Role role);

	List<User> listAll();

}
